#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int p=998244353;
inline int qpow(int a,int b){
  int r=1;
  while(b){
    if(b&1)r=1ll*r*a%p;
    a=1ll*a*a%p,b>>=1;
  }
  return r;
}
int main(){
  freopen("soft.in","r",stdin);
  freopen("soft.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n,k; bool f=true; cin>>n>>k;
  vector<vector<int> > g(n);
  for(int i=1;i<n;i++){
    int u,v; cin>>u>>v;
    f&=abs(--u-(--v))==1;
    g[u].emplace_back(v);
    g[v].emplace_back(u);
  }
  if(f){
    vector<int> f(n+1);
    for(int i=f[0]=1;i<=n;i++)
      f[i]=1ll*f[i-1]*i%p;
    auto com=[&](int x,int y){
      return 1ll*f[x]*qpow(1ll*f[y]*f[x-y]%p,p-2)%p;
    };
    for(int i=0;i<k;i++)
      cout<<com(n-1,i)<<'\n';
  }
  else{
    vector<vector<ll> > f(n,vector<ll>(k+1));
    for(int l=0;l<n;l++){
      vector<bool> b(n);
      vector<int> q(k);
      for(int i=0;i<k;i++)
        q[i]=l?f[l-1][i]:!i;
      for(int r=l,s=0;r<n;r++){
        if(r>l){
          int c=0;
          for(int i:g[r])
            if(i>=l&&i<=r)c++;
          s-=c-1;
        }
        if(!s)for(int i=0;i<k;i++)
          f[r][i+1]+=q[i];
      }
      for(auto &i:f[l])i%=p;
    }
    for(int i=1;i<=k;i++)
      cout<<f[n-1][i]<<'\n';
  }
  return 0;
}